package com.zxy.pojo.vo;

import lombok.Data;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 部门视图对象（专门用于接口返回，与前端格式完全对齐）
 */
@Data
public class SysDeptVO {

    // ---------------------- 前端需要的字段（与SQL返回别名一一对应） ----------------------
    /**
     * 部门ID：对应数据库id（SQL中AS deptId）
     */
    private Long deptId;

    /**
     * 父部门ID：对应数据库parent_id（SQL中AS parentId）
     */
    private Long parentId;

    /**
     * 祖先路径：对应数据库ancestors
     */
    private String ancestors;

    /**
     * 部门名称：对应数据库label（SQL中AS deptName）
     */
    private String deptName;

    /**
     * 排序号：对应数据库sort（SQL中AS orderNum）
     */
    private String orderNum;

    /**
     * 部门负责人：对应数据库leader
     */
    private String leader;

    /**
     * 联系电话：对应数据库phone
     */
    private String phone;

    /**
     * 部门邮箱：对应数据库email
     */
    private String email;

    /**
     * 状态：对应数据库status（0=正常，1=禁用）
     */
    private String status;

    /**
     * 删除标志：对应数据库del_flag（SQL中AS delFlag）
     */
    private String delFlag;

    /**
     * 创建人：对应数据库create_by（SQL中AS createBy）
     */
    private String createBy;

    /**
     * 创建时间：对应数据库create_time（SQL中AS createTime，格式化字符串）
     */
    private LocalDateTime createTime;

    /**
     * 更新人：对应数据库update_by（SQL中AS updateBy）
     */
    private String updateBy;

    /**
     * 更新时间：对应数据库update_time（SQL中AS updateTime）
     */
    private LocalDateTime updateTime;

    // ---------------------- 前端需要的额外字段（非数据库直接字段） ----------------------
    /**
     * 父部门名称：对应SQL中关联查询的p.label（AS parentName）
     */
    private String parentName;

    /**
     * 用户列表：前端需要，默认空列表（避免null）
     */
    private List<Object> users = new ArrayList<>();

    /**
     * 子部门列表：树形结构需要，默认空列表（避免null）
     */
    private List<SysDeptVO> children = new ArrayList<>();
}
